/*
@author: zwz
@file: 2022-11-3-作业.go
@time: 2022/11/3 0003 17:21:27
*/
package main

import (
	"bufio"
	"fmt"
	"os"
)
import "strings"


func main() {

	//题目：
	//1、使用*号输出直角三角形

	var str1 = "*"
	for i := 0; i < 10; i++ {
		fmt.Println(str1)
		str1 += "**"
	}

	//2、输出九九乘法表

	for i := 1; i <= 9; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%d*%d=%d ", i, j, i*j)
		}
		fmt.Println()
	}

	//3、判断从键盘输入，字母数字字符是否为回文,如果将大写字符转化为小写字符，并移除多有非字母数字字符后，
	//正向读和反向读都一样，那就是回文。 无限次输入，按q退出
	//A,bc?: 1d,1C*ba  -- > abc1d1cba

	for {
		var str1 string
		var a string
		str2 := ""
		fmt.Println("请输入：")
		reader := bufio.NewReader(os.Stdin)
		str1,_ = reader.ReadString('\n')

		for i := 0; i < len(str1); i++ {
			if IsAlnum(str1[i]) {
				str2 = str2 + string(str1[i])
			}
		}

		str3 := strings.ToLower(str2)

		res := []rune(str3)

		var len = len(res)
		var halfLen = len / 2
		var i int
		for i = 0; i < halfLen; i++ {
			if res[i] != res[len-i-1] {
				break
			}
		}

		if i == halfLen {
			fmt.Println( "是回文")
		} else {
			fmt.Println( "不是回文")
		}

		fmt.Println("请输入q退出，输入任意继续：")
		fmt.Scanln(&a)
		if a == "q" {
			break
		}
	}
}


func IsAlnum(b byte) bool {
	return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || (b >= '0' && b <= '9')
}